/**
 * Class: Surface
 *
 * Purpose: 
 *
 * Created: Jan 27, 2010 @ 9:40:52 AM
 * @author Ken Scott
 */
package org.openfantasia.ps.modifier;

import org.openfantasia.ps.particle.Particle;
import org.openfantasia.time.Tickable;
import org.openfantasia.ui.PColor;
import org.openfantasia.ui.PFrame;
import org.openfantasia.ui.Renderable;

public abstract class Surface extends Particle implements Tickable, Modifier, Renderable {

	protected double friction = 0.99;

	protected double bounce = 1.0;


	public Surface() {
		setForceSensitive(false);
	}


	public Surface(PColor lineColor, PColor fillColor) {
		this.lineColor = lineColor;
		this.fillColor = fillColor;
	}


	public Surface(PColor lineColor, PColor fillColor, double friction, double bounce) {
		this.lineColor = lineColor;
		this.fillColor = fillColor;
		this.friction = friction;
		this.bounce = bounce;
	}


	public double getFriction() {
		return friction;
	}


	public void setFriction(double friction) {
		this.friction = friction;
	}


	public double getBounce() {
		return bounce;
	}


	public void setBounce(double bounce) {
		this.bounce = bounce;
	}


	public void draw(PFrame frame) {
	}


	public abstract void act(Particle particle);


	@Override
	public String toString() {
		return "Surface{" +
				"lineColor=" + lineColor +
				", fillColor=" + fillColor +
				", friction=" + friction +
				", bounce=" + bounce +
				'}';
	}
}
